home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Language/OS - Multiplatform Resource Library
/
LANGUAGE OS.iso
/
cpp_libs
/
answrbok
/
5_5.lha
/
5_5
/
5_5b.c
< prev
next >
Wrap
Text File
|
1993-08-08
|
851b
|
47 lines
* Copyright (c) 1990 by AT&T Bell Telephone Laboratories, Incorporated. */
* The C++ Answer Book */
* Tony Hansen */
* All rights reserved. */
include <5.5A.h>
tatic void treeval(tree* head)
if (head)
{
switch (head->type)
{
case PLUS:
return treeval(head->left) + treeval(head->right);
case MINUS:
return treeval(head->left) - treeval(head->right);
case DIV:
return treeval(head->left) / treeval(head->right);
case MULT:
return treeval(head->left) * treeval(head->right);
case NEG:
return -treeval(head->left);
case NUMBER:
return head->value;
default:
error("unknown type within tree");
break;
}
else
error("null node found");
return 0;
nt expr:: eval()
if (evaluated)
return value;
value = treeval(head);
evaluated++;